package com.liuguangzhou.utils;

import com.alibaba.fastjson.JSON;

import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class BeanMap<K,V> extends HashMap<K, V> {
	private String seqId;
	
    public Double getDoubleValue(String key){
        return (Double) super.get(key);
    }
	
    //数据库保存科学计数法问题修改；暂时没有用此方法；
	public String getDoubleValueN1(String key){
		if(getDoubleValue(key) ==  null){
			return null;
		}

    	DecimalFormat nf = new DecimalFormat("#.########");   
        return nf.format(getDoubleValue(key));
    }
	
	public Long getLongValue(String key){
		return (Long)super.get(key);
	}
	public String getStringValue(String key){
		Object o = super.get(key);
		if(o instanceof Integer){
            return Integer.toString((Integer)o);
        }
		return (String)super.get(key);
//		return (String)super.get(key);
	}
	public Integer getIntegerValue(String key){
		return (Integer)super.get(key);
	}
    public BigDecimal getBigDecimalValue(String key){
        return (BigDecimal)super.get(key);
    }
    public List getListValue(String key){
        return (List)super.get(key);
    }
    public Map getMapValue(String key){
        return (Map)super.get(key);
    }

    public String getFormatTime(String key){
        return this.getFormatTime(key, null);
//        try {
//            Timestamp time = (Timestamp) super.get(key);
//            return DateKit.formatDateDefault(time);
//        }catch (Exception e){
//            return "";
//        }
    }
    
    public String getFormatTime(String key,String pattern){
        try {
            Timestamp time = (Timestamp) super.get(key);
            return DateKit.formatDateByPattern(time,pattern);
        }catch (Exception e){
            return "";
        }
    }
    
    /**
     * 数据库Date类型转换
     * @param key
     * @return
     */
    public String getFormatDateTime(String key){
    	String Out="";
    	Date time = (Date) super.get(key);
    	if(time !=null){
    		Out=DateKit.formatDateDefault(time);
    	}
    	return Out;
    }
    
    /**
     * 获取Date类型数据
     * @author LD   
     * @date 2016年6月15日 上午10:17:51  
     * @param key
     * @return Date
     * @throws
     */
    public Date getDateByKey(String key){
    	return (Date) super.get(key);
    }
    
    public String getObjectToString(String key){
        Object o = super.get(key);
        if(o instanceof Integer){
            return Integer.toString((Integer)o);
        }else if(o instanceof Long){
            return Long.toString((Long)o);
        }else if(o instanceof Double){
        	DecimalFormat nf = new DecimalFormat("#.########");
            return nf.format((Double)o);
        }else if(o instanceof BigDecimal){
            return o.toString();
        }else if(o instanceof String){
            return (String)o;
        }else{
            return "";
        }
    }
	public String getSeqId() {
		return seqId;
	}
	public void setSeqId(String seqId) {
		this.seqId = seqId;
	}

    @Override
    public String toString(){
        return JSON.toJSONString(this);
    }
    
    public void append(K key,V value){
    	if(this.get(key)==null){
    		super.put(key, value);
    	}else{
    		String valueAppend = this.get(key)+"  "+value;
    		super.put(key, (V)valueAppend);
    	}
    }
    public static void main(String[] args) {
//    	double d = 11111111111111111111.2222222222222;
//    	System.out.println(d);
//    	System.out.println(new BigDecimal(d));
//		BigDecimal dd = new BigDecimal("11111111111111111111111.22222222");
//		System.out.println(dd);
//		
//		

    	DecimalFormat nf = new DecimalFormat("#.########");  //格式化设置  
    	//df.setGroupingUsed(false);
    	Double d = new Double("2222222211.3333222");  
    	System.out.println(d);
    	System.out.println(d.toString()); 
    	System.out.println(new BigDecimal(d).toString());
	}
    
}

